// var arr = new Array(6)
// arr.fill(1,3,6)
// console.log(arr)

var arr = [1,2,3]
arr.length =10
arrayFill(arr,1,1,10)
console.log(arr)

//重构 fill

//数组 元素 开始 结束
function arrayFill(arr, value, start, end) {
    //如果不是数组报错
    if (!arr || arr.constructor !== Array) throw new Error(arr + "is not Array!");
    //开始下标为0 的时候赋值为0
    if (isNaN(start)) start = 0
    //结束下标是NaN 赋值数组的长度
    if (isNaN(end)) end = arr.length
    //把开始结束下标强制转换成数值类型
    start = Number(start)
    end = Number(end)
    //如果 开始下标小于0 时判断 开始下标 + 数组长度是否小于0 如果小于0 开始下标就为0 否则开始下摆哦 = 开始下标+ 数组长度
    if (start < 0) start = start + arr.length < 0 ? 0 : start + arr.length
    //如果结束下标小于0时判断结束下标+数组长度是否小于0 如果小于0 结束下标=0 否则结束下标=结束下标+数组长度
    if (end < 0) end = end + arr.length < 0 ? 0 : end + arr.length
    //如果下标大于数组长度 结合素下标等于数组长度
    if(end > arr.length)end = arr.length
    //开始下标到结束下标 把value 赋值数组元素
    for(var i = start;i< end;i++){
        arr[i] = value
    }
    //返回数组
    return arr
}